//
// Created on 2025/3/11.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".

// 实现关键点说明：‌
//
// ‌Native模块架构：‌
// 使用Node-API创建原生模块
// OpenGL操作全部在C++层实现
// 渲染线程独立运行，通过原子变量控制生命周期
// ‌纹理数据交互：

// PixelMap数据传输示例
napi_value UpdatePxlMap(napi_env env, napi_callback_info info) {
    // 从ArkTS获取ArrayBuffer
    napi_value arrayBuffer;
    napi_get_cb_arg(env, info, 0, &arrayBuffer);
    
    void* pixelData;
    size_t bufferSize;
    napi_get_arraybuffer_info(env, arrayBuffer, &pixelData, &bufferSize);
    
    // 获取宽高参数
    int32_t width, height;
    napi_get_cb_arg(env, info, 1, &width);
    napi_get_cb_arg(env, info, 2, &height);
    
    // 更新纹理
    glBindTexture(GL_TEXTURE_2D, pxlTexture_);
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, 
                   GL_RGBA, GL_UNSIGNED_BYTE, pixelData);
}


//‌摄像头集成方案：
    
void SetupCameraTexture() {
    // 创建OES纹理
    glGenTextures(1, &cameraTexture_);
    glBindTexture(GL_TEXTURE_EXTERNAL_OES, cameraTexture_);
    
    // 创建SurfaceTexture
    ANativeWindow* window = ...; // 从摄像头API获取
    EGLSurface surface = eglCreateWindowSurface(display_, config_, window, NULL);
    
    // 配置摄像头输出
    camera_config.outputSurface = surface;
    Camera_Configure(cameraDevice_, &camera_config);
}


